package com.etocrm.saas.lib.base.db.configuration;

import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Bean;

/**
 * mybatis-plus自动配置类
 */
@Slf4j
public class MybatisPlusAutoConfiguration {

    /******************************************************************
     * 注意：必须保证以下Bean的顺序，同类型的，上面的后执行，下面的先执行
     *      分页的执行需要晚于敏感字段处理，敏感字段加密之后用于分页总数的获取
     ******************************************************************
     */


    /**
     * Mybatis Plus 拦截器
     *
     * @return the druid plus interceptor
     */
    @Bean
    public MybatisPlusInterceptor mybatisPlusInterceptor() {
        // Mybatis 拦截器
        MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
        // 分页支持
        PaginationInnerInterceptor paginationInnerInterceptor = new PaginationInnerInterceptor(DbType.MYSQL);
        paginationInnerInterceptor.setMaxLimit(1000L);
        interceptor.addInnerInterceptor(paginationInnerInterceptor);
        log.info("加载 mybatisPlusInterceptor");
        return interceptor;
    }
}
